package dian.qing.li.demo.security.service;

import com.baomidou.mybatisplus.extension.service.IService;
import dian.qing.li.demo.security.bean.AuthParam;
import dian.qing.li.demo.security.dto.AuthorityDto;
import dian.qing.li.demo.security.dto.RequestDto;

import java.util.List;

/**
 * <p>
 * 权限表 服务类
 * </p>
 *
 * @author admin
 * @since 2020-07-01
 */
public interface AuthorityService extends IService<AuthorityDto> {

    /**
     * 权限树
     *
     * @param param 参数
     * @author: liqingdian
     */
    List<AuthorityDto> tree(AuthParam param);

    /**
     * 详情
     *
     * @param id 主键
     * @author: liqingdian
     */
    AuthorityDto find(Integer id);

    /**
     * 详情
     *
     * @param authCode 权限编码
     * @author: liqingdian
     */
    AuthorityDto find(String authCode);

    /**
     * 角色权限列表
     *
     * @param roleCode 角色编码
     * @author: liqingdian
     */
    List<AuthorityDto> treeByRoleCode(String roleCode);

    /**
     * 新建
     *
     * @param inserted 新建
     * @author: liqingdian
     */
    boolean inserted(AuthorityDto inserted);

    /**
     * 更新
     *
     * @param updated 更新
     * @author: liqingdian
     */
    boolean updated(AuthorityDto updated);

    /**
     * 是否禁用
     *
     * @param id       主键
     * @param disabled 是否禁用
     * @author: liqingdian
     */
    boolean disabled(Integer id, boolean disabled);

    /**
     * 删除
     *
     * @param id 主键
     * @author: liqingdian
     */
    boolean deleted(Integer id);

    /**
     * 绑定请求
     *
     * @param id       主键
     * @param requests 请求
     * @author: liqingdian
     */
    boolean bindRequest(Integer id, List<RequestDto> requests);

    /**
     * 解绑请求
     *
     * @param id       主键
     * @param requests 请求
     * @author: liqingdian
     */
    boolean unbindRequest(Integer id, List<RequestDto> requests);
}
